package com.ruoyi.project.modules.table.mapper;

import java.util.List;

import com.ruoyi.project.modules.interfaceinfo.domain.InterfaceInfo;
import com.ruoyi.project.modules.table.domain.TableInfo;
import com.ruoyi.project.modules.table.domain.FieldInfo;
import com.ruoyi.project.modules.tableRelation.domain.TableRelation;
import org.apache.ibatis.annotations.Param;

/**
 * 类对象信息Mapper接口
 * 
 * @author smallrain
 * @date 2021-10-28
 */
public interface TableInfoMapper 
{
    /**
     * 查询类对象信息
     * 
     * @param id 类对象信息主键
     * @return 类对象信息
     */
    public TableInfo selectTableInfoById(Long id);

    /**
     * 查询类对象信息列表
     * 
     * @param tableInfo 类对象信息
     * @return 类对象信息集合
     */
    public List<TableInfo> selectTableInfoList(TableInfo tableInfo);

    /**
     * 新增类对象信息
     * 
     * @param tableInfo 类对象信息
     * @return 结果
     */
    public int insertTableInfo(TableInfo tableInfo);

    /**
     * 修改类对象信息
     * 
     * @param tableInfo 类对象信息
     * @return 结果
     */
    public int updateTableInfo(TableInfo tableInfo);

    /**
     * 删除类对象信息
     * 
     * @param id 类对象信息主键
     * @return 结果
     */
    public int deleteTableInfoById(Long id);

    /**
     * 批量删除类对象信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTableInfoByIds(String[] ids);

    /**
     * 批量删除字段信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFieldInfoByIds(@Param("ids") String[] ids);
    
    /**
     * 批量新增字段信息
     * 
     * @param fieldInfoList 字段信息列表
     * @return 结果
     */
    public int batchFieldInfo(List<FieldInfo> fieldInfoList);
    public int batchFieldInfo2(List<FieldInfo> fieldInfoList);


    /**
     * 通过类对象信息主键删除字段信息信息
     * 
     * @param id 类对象信息ID
     * @return 结果
     */
    public int deleteFieldInfoById(@Param("id") Long id);

    int deleteFieldInfoByTableId(Long id);

    void deleteFieldInfoByTableIds(String[] toStrArray);

    List<FieldInfo> selectFieldInfoList(@Param("filedIds") List<Long> filedIds);

    List<InterfaceInfo> interfaceList(@Param("tableId") Long tableId);

    List<FieldInfo> fieldInfoList(@Param("fieldInfo") FieldInfo fieldInfo);

    List<TableInfo> selectTableInfoByTableIds(@Param("tableIds") List<Long> tableIds);

    List<TableInfo> selectTableInfoByTableIdsV2(@Param("tableIds") List<Long> tableIds);

    FieldInfo selectFieldInfo(@Param("tableEnName") String tableEnName, @Param("fieldEnName") String fieldEnName);

    List<TableRelation> selectTableInfoByRelation(@Param("tableId") Long tableId);

    List<FieldInfo> selectFieldInfoByFieldId(@Param("fieldIds") List<Long> fieldIds);

    void updateFieldDesign(@Param("fieldInfo") FieldInfo fieldInfo);

    List<FieldInfo> selectFieldInfos();

    void updateFieldInfo(@Param("fieldInfo") FieldInfo fieldInfo);

    List<FieldInfo> queryFieldInfoList(@Param("fieldInfo") FieldInfo fieldInfo);
}
